const sharp = require('sharp');

// 输入图像路径
const inputImagePath = 'bb.png';

// 输出图像路径
const outputImagePath = 'image.png';

// 处理图像
sharp(inputImagePath)
  .greyscale() // 转为黑白
  .raw() // 获取原始像素数据
  .toBuffer({ resolveWithObject: true })
  .then(({ data, info }) => {
    // 处理每个像素的透明度
    for (let i = 0; i < data.length; i += 4) {
      const brightness = (data[i] + data[i + 1] + data[i + 2]) / 3; // 计算亮度
      const alpha = Math.round((brightness / 255) * 50 + 50); // 设置透明度，根据亮度计算
      data[i + 3] = alpha; // 设置透明度值
    }

    // 写入处理后的图像
    return sharp(data, { raw: { width: info.width, height: info.height, channels: 4 } })
      .png()
      .toFile(outputImagePath);
  })
  .then(() => {
    console.log('处理完成');
  })
  .catch((error) => {
    console.error('处理失败:', error);
  });